package com.learn.a05_2_mars_photos.data

import com.learn.a05_2_mars_photos.model.MarsPhoto
import com.learn.a05_2_mars_photos.network.MarsApiService

/**
 * 数据仓库层 - 火星照片数据源抽象
 *
 * 该接口定义获取火星照片数据的契约，用于实现依赖倒置原则（DIP）
 */
interface MarsPhotosRepository {
    /**
     * 获取火星照片列表
     * @return 包含[MarsPhoto](file://C:\Users\A-bcd\Desktop\Program\Android\LearnCompose\05_2_mars_photos\src\main\java\com\learn\a05_2_mars_photos\model\MarsPhoto.kt#L8-L13)对象的列表（网络请求结果）
     */
    suspend fun getMarsPhotos(): List<MarsPhoto>
}

/**
 * 网络数据仓库实现类
 *
 * 通过 Retrofit 服务获取远程数据源的火星照片信息
 * @property marsApiService 网络请求服务接口实例
 */
class NetworkMarsPhotosRepository(
    private val marsApiService: MarsApiService
) : MarsPhotosRepository {
    /**
     * 具体实现网络数据获取逻辑
     * @return 反序列化后的[MarsPhoto](file://C:\Users\A-bcd\Desktop\Program\Android\LearnCompose\05_2_mars_photos\src\main\java\com\learn\a05_2_mars_photos\model\MarsPhoto.kt#L8-L13)对象列表
     */
    override suspend fun getMarsPhotos(): List<MarsPhoto> = marsApiService.getPhotos()
}

